home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Tcl-Tk 8.0 / Pre-installed version / tcl8.0 / tests / registry.test < prev    next >
Encoding:
Text File  |  1997-08-15  |  22.1 KB  |  513 lines  |  [TEXT/ALFA]

  1. # registry.test --
  2. #
  3. # This file contains a collection of tests for the registry command.
  4. # Sourcing this file into Tcl runs the tests and generates output for
  5. # errors.  No output means no errors were found.
  6. #
  7. # In order for these tests to run, the registry package must be on the
  8. # auto_path or the registry package must have been loaded already.
  9. #
  10. # Copyright (c) 1997 by Sun Microsystems, Inc.  All rights reserved.
  11. #
  12. # SCCS: @(#) registry.test 1.5 97/08/01 11:14:25
  13.  
  14. if {$tcl_platform(platform) != "windows"} {
  15.     return
  16. }
  17.  
  18. if {[string compare test [info procs test]] == 1} then {source defs}
  19.  
  20. if [catch {package require registry}] {
  21.     puts "Unable to find the registry package. Skipping registry tests."
  22.     return
  23. }
  24.  
  25. if {$testConfig(win32s)} {
  26.     puts "Skipping registry tests under Win32s"
  27.     return
  28. }
  29.  
  30. switch $tcl_platform(os) {
  31.     "Windows NT" {set testConfig(NT) 1}
  32.     "Windows 95" {set testConfig(95) 1}
  33. }
  34.  
  35. set hostname [info hostname]
  36.  
  37. test registry-1.1 {argument parsing for registry command} {
  38.     list [catch {registry} msg] $msg
  39. } {1 {wrong # args: should be "registry option ?arg arg ...?"}}
  40. test registry-1.2 {argument parsing for registry command} {
  41.     list [catch {registry foo} msg] $msg
  42. } {1 {bad option "foo": must be delete, get, keys, set, type, or values}}
  43.  
  44. test registry-1.3 {argument parsing for registry command} {
  45.     list [catch {registry d} msg] $msg
  46. } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
  47. test registry-1.4 {argument parsing for registry command} {
  48.     list [catch {registry delete} msg] $msg
  49. } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
  50. test registry-1.5 {argument parsing for registry command} {
  51.     list [catch {registry delete foo bar baz} msg] $msg
  52. } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
  53.  
  54. test registry-1.6 {argument parsing for registry command} {
  55.     list [catch {registry g} msg] $msg
  56. } {1 {wrong # args: should be "registry get keyName valueName"}}
  57. test registry-1.7 {argument parsing for registry command} {
  58.     list [catch {registry get} msg] $msg
  59. } {1 {wrong # args: should be "registry get keyName valueName"}}
  60. test registry-1.8 {argument parsing for registry command} {
  61.     list [catch {registry get foo} msg] $msg
  62. } {1 {wrong # args: should be "registry get keyName valueName"}}
  63. test registry-1.9 {argument parsing for registry command} {
  64.     list [catch {registry get foo bar baz} msg] $msg
  65. } {1 {wrong # args: should be "registry get keyName valueName"}}
  66.  
  67. test registry-1.10 {argument parsing for registry command} {
  68.     list [catch {registry k} msg] $msg
  69. } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
  70. test registry-1.11 {argument parsing for registry command} {
  71.     list [catch {registry keys} msg] $msg
  72. } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
  73. test registry-1.12 {argument parsing for registry command} {
  74.     list [catch {registry keys foo bar baz} msg] $msg
  75. } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
  76.  
  77. test registry-1.13 {argument parsing for registry command} {
  78.     list [catch {registry s} msg] $msg
  79. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  80. test registry-1.14 {argument parsing for registry command} {
  81.     list [catch {registry set} msg] $msg
  82. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  83. test registry-1.15 {argument parsing for registry command} {
  84.     list [catch {registry set foo bar} msg] $msg
  85. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  86. test registry-1.16 {argument parsing for registry command} {
  87.     list [catch {registry set foo bar baz blat gorp} msg] $msg
  88. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  89.  
  90. test registry-1.17 {argument parsing for registry command} {
  91.     list [catch {registry t} msg] $msg
  92. } {1 {wrong # args: should be "registry type keyName valueName"}}
  93. test registry-1.18 {argument parsing for registry command} {
  94.     list [catch {registry type} msg] $msg
  95. } {1 {wrong # args: should be "registry type keyName valueName"}}
  96. test registry-1.19 {argument parsing for registry command} {
  97.     list [catch {registry type foo} msg] $msg
  98. } {1 {wrong # args: should be "registry type keyName valueName"}}
  99. test registry-1.20 {argument parsing for registry command} {
  100.     list [catch {registry type foo bar baz} msg] $msg
  101. } {1 {wrong # args: should be "registry type keyName valueName"}}
  102.  
  103. test registry-1.21 {argument parsing for registry command} {
  104.     list [catch {registry v} msg] $msg
  105. } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
  106. test registry-1.22 {argument parsing for registry command} {
  107.     list [catch {registry values} msg] $msg
  108. } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
  109. test registry-1.23 {argument parsing for registry command} {
  110.     list [catch {registry values foo bar baz} msg] $msg
  111. } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
  112.  
  113. test registry-2.1 {DeleteKey: bad key} {
  114.     list [catch {registry delete foo} msg] $msg
  115. } {1 {bad root name "foo": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, or HKEY_CURRENT_CONFIG}}
  116. test registry-2.2 {DeleteKey: bad key} {
  117.     list [catch {registry delete HKEY_CLASSES_ROOT} msg] $msg
  118. } {1 {bad key: cannot delete root keys}}
  119. test registry-2.3 {DeleteKey: bad key} {
  120.     list [catch {registry delete HKEY_CLASSES_ROOT\\} msg] $msg
  121. } {1 {bad key: cannot delete root keys}}
  122. test registry-2.4 {DeleteKey: subkey at root level} {
  123.     registry set HKEY_CLASSES_ROOT\\TclFoobar
  124.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  125.     registry keys HKEY_CLASSES_ROOT TclFoobar
  126. } {}
  127. test registry-2.5 {DeleteKey: subkey below root level} {
  128.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test
  129.     registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test
  130.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar\\test]
  131.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  132.     set result
  133. } {}
  134. test registry-2.6 {DeleteKey: recursive delete} {
  135.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
  136.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
  137.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  138.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
  139.     set result
  140. } {}
  141. test registry-2.7 {DeleteKey: trailing backslashes} {
  142.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
  143.     list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar\\} msg] $msg
  144. } {1 {unable to delete key: The configuration registry key is invalid.}}
  145. test registry-2.8 {DeleteKey: failure} {
  146.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  147.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  148. } {}
  149.  
  150.  
  151. test registry-3.1 {DeleteValue} {
  152.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  153.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test1 blort
  154.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test2 blat
  155.     registry delete HKEY_CLASSES_ROOT\\TclFoobar\\baz test1
  156.     set result [registry values HKEY_CLASSES_ROOT\\TclFoobar\\baz]
  157.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  158.     set result
  159. } test2
  160. test registry-3.2 {DeleteValue: bad key} {
  161.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  162.     list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar test} msg] $msg
  163. } {1 {unable to open key: The system cannot find the file specified.}}
  164. test registry-3.3 {DeleteValue: bad value} {
  165.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  166.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test2 blort
  167.     set result [list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar test1} msg] $msg]
  168.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  169.     set result
  170. } {1 {unable to delete value "test1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
  171.  
  172.  
  173. test registry-4.1 {GetKeyNames: bad key} {
  174.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  175.     list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
  176. } {1 {unable to open key: The system cannot find the file specified.}}
  177. test registry-4.2 {GetKeyNames} {
  178.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  179.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
  180.     set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
  181.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  182.     set result
  183. } {baz}
  184. test registry-4.3 {GetKeyNames: remote key} {nonPortable} {
  185.     registry set \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar\\baz
  186.     set result [registry keys \\\\gaspode\\HKEY_CLASSES_ROOT\\TclFoobar]
  187.     registry delete \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar
  188.     set result
  189. } {baz}
  190. test registry-4.4 {GetKeyNames: empty key} {
  191.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  192.     registry set HKEY_CLASSES_ROOT\\TclFoobar
  193.     set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
  194.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  195.     set result
  196. } {}
  197. test registry-4.5 {GetKeyNames: patterns} {
  198.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  199.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
  200.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
  201.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
  202.     set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
  203.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  204.     set result
  205. } {baz blat}
  206. test registry-4.6 {GetKeyNames: names with spaces} {
  207.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  208.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\ bar
  209.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
  210.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
  211.     set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
  212.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  213.     set result
  214. } {{baz bar} blat}
  215.  
  216. test registry-5.1 {GetType} {
  217.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  218.     list [catch {registry type HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
  219. } {1 {unable to open key: The system cannot find the file specified.}}
  220. test registry-5.2 {GetType} {
  221.     registry set HKEY_CLASSES_ROOT\\TclFoobar
  222.     list [catch {registry type HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
  223. } {1 {unable to get type of value "val1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
  224. test registry-5.3 {GetType} {
  225.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar none
  226.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  227.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  228.     set result
  229. } none
  230. test registry-5.4 {GetType} {
  231.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar
  232.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  233.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  234.     set result
  235. } sz
  236. test registry-5.5 {GetType} {
  237.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar sz
  238.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  239.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  240.     set result
  241. } sz
  242. test registry-5.6 {GetType} {
  243.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar expand_sz
  244.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  245.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  246.     set result
  247. } expand_sz
  248. test registry-5.7 {GetType} {
  249.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 binary
  250.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  251.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  252.     set result
  253. } binary
  254. test registry-5.8 {GetType} {
  255.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 dword
  256.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  257.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  258.     set result
  259. } dword
  260. test registry-5.9 {GetType} {
  261.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 dword_big_endian
  262.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  263.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  264.     set result
  265. } dword_big_endian
  266. test registry-5.10 {GetType} {
  267.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 link
  268.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  269.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  270.     set result
  271. } link
  272. test registry-5.11 {GetType} {
  273.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar multi_sz
  274.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  275.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  276.     set result
  277. } multi_sz
  278. test registry-5.12 {GetType} {
  279.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 resource_list
  280.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  281.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  282.     set result
  283. } resource_list
  284. test registry-5.13 {GetType: unknown types} {
  285.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 24
  286.     set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
  287.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  288.     set result
  289. } 24
  290.  
  291. test registry-6.1 {GetValue} {
  292.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  293.     list [catch {registry get HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
  294. } {1 {unable to open key: The system cannot find the file specified.}}
  295. test registry-6.2 {GetValue} {
  296.     registry set HKEY_CLASSES_ROOT\\TclFoobar
  297.     list [catch {registry get HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
  298. } {1 {unable to get value "val1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
  299. test registry-6.3 {GetValue} {
  300.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar none
  301.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  302.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  303.     set result
  304. } foobar
  305. test registry-6.4 {GetValue} {
  306.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar
  307.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  308.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  309.     set result
  310. } foobar
  311. test registry-6.5 {GetValue} {
  312.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar sz
  313.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  314.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  315.     set result
  316. } foobar
  317. test registry-6.6 {GetValue} {
  318.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar expand_sz
  319.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  320.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  321.     set result
  322. } foobar
  323. test registry-6.7 {GetValue} {
  324.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 binary
  325.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  326.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  327.     set result
  328. } 1
  329. test registry-6.8 {GetValue} {
  330.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 0x20 dword
  331.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  332.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  333.     set result
  334. } 32
  335. test registry-6.9 {GetValue} {
  336.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 0x20 dword_big_endian
  337.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  338.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  339.     set result
  340. } 32
  341. test registry-6.10 {GetValue} {
  342.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 link
  343.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  344.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  345.     set result
  346. } 1
  347. test registry-6.11 {GetValue} {
  348.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar multi_sz
  349.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  350.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  351.     set result
  352. } foobar
  353. test registry-6.12 {GetValue} {
  354.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo\ bar baz} multi_sz
  355.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  356.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  357.     set result
  358. } {{foo bar} baz}
  359. test registry-6.13 {GetValue} {
  360.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {} multi_sz
  361.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  362.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  363.     set result
  364. } {}
  365. test registry-6.14 {GetValue: truncation of multivalues with null elements} {
  366.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {a {} b} multi_sz
  367.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  368.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  369.     set result
  370. } a
  371. test registry-6.15 {GetValue} {
  372.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 resource_list
  373.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  374.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  375.     set result
  376. } 1
  377. test registry-6.16 {GetValue: unknown types} {
  378.     registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 24
  379.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
  380.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  381.     set result
  382. } 1
  383.  
  384. test registry-7.1 {GetValueNames: bad key} {
  385.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  386.     list [catch {registry values HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
  387. } {1 {unable to open key: The system cannot find the file specified.}}
  388. test registry-7.2 {GetValueNames} {
  389.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  390.     registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar
  391.     set result [registry values HKEY_CLASSES_ROOT\\TclFoobar]
  392.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  393.     set result
  394. } baz
  395. test registry-7.3 {GetValueNames} {
  396.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  397.     registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar1
  398.     registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
  399.     registry set HKEY_CLASSES_ROOT\\TclFoobar {} foobar3
  400.     set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar]]
  401.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  402.     set result
  403. } {{} baz blat}
  404. test registry-7.4 {GetValueNames: remote key} {nonPortable} {
  405.     registry set \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar baz blat
  406.     set result [registry values \\\\gaspode\\HKEY_CLASSES_ROOT\\TclFoobar]
  407.     registry delete \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar
  408.     set result
  409. } baz
  410. test registry-7.5 {GetValueNames: empty key} {
  411.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  412.     registry set HKEY_CLASSES_ROOT\\TclFoobar
  413.     set result [registry values HKEY_CLASSES_ROOT\\TclFoobar]
  414.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  415.     set result
  416. } {}
  417. test registry-7.6 {GetValueNames: patterns} {
  418.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  419.     registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar1
  420.     registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
  421.     registry set HKEY_CLASSES_ROOT\\TclFoobar foo foobar3
  422.     set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar b*]]
  423.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  424.     set result
  425. } {baz blat}
  426. test registry-7.7 {GetValueNames: names with spaces} {
  427.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  428.     registry set HKEY_CLASSES_ROOT\\TclFoobar baz\ bar foobar1
  429.     registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
  430.     registry set HKEY_CLASSES_ROOT\\TclFoobar foo foobar3
  431.     set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar b*]]
  432.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  433.     set result
  434. } {{baz bar} blat}
  435.  
  436. test registry-8.1 {OpenSubKey} {nonPortable} {
  437.     list [catch {registry keys {\\petrouchka\HKEY_LOCAL_MACHINE}} msg] $msg
  438. } {1 {unable to open key: Access is denied.}}
  439. test registry-8.2 {OpenSubKey} {
  440.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  441.     registry set HKEY_CLASSES_ROOT\\TclFoobar
  442.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
  443.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  444.     set result
  445. } TclFoobar
  446. test registry-8.3 {OpenSubKey} {
  447.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  448.     list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
  449. } {1 {unable to open key: The system cannot find the file specified.}}
  450.  
  451. test registry-9.1 {ParseKeyName: bad keys} {
  452.     list [catch {registry values \\} msg] $msg
  453. } "1 {bad key \"\\\": must start with a valid root}"
  454. test registry-9.2 {ParseKeyName: bad keys} {
  455.     list [catch {registry values \\foobar} msg] $msg
  456. } {1 {bad key "\foobar": must start with a valid root}}
  457. test registry-9.3 {ParseKeyName: bad keys} {
  458.     list [catch {registry values \\\\} msg] $msg
  459. } {1 {ambiguous root name "": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, or HKEY_CURRENT_CONFIG}}
  460. test registry-9.4 {ParseKeyName: bad keys} {
  461.     list [catch {registry values \\\\\\} msg] $msg
  462. } {1 {ambiguous root name "": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, or HKEY_CURRENT_CONFIG}}
  463. test registry-9.5 {ParseKeyName: bad keys} {
  464.     list [catch {registry values \\\\\\HKEY_CLASSES_ROOT} msg] $msg
  465. } {1 {unable to open key: The network address is invalid.}}
  466. test registry-9.6 {ParseKeyName: bad keys} {
  467.     list [catch {registry values \\\\gaspode} msg] $msg
  468. } {1 {ambiguous root name "": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, or HKEY_CURRENT_CONFIG}}
  469. test registry-9.7 {ParseKeyName: bad keys} {
  470.     list [catch {registry values foobar} msg] $msg
  471. } {1 {bad root name "foobar": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, or HKEY_CURRENT_CONFIG}}
  472. test registry-9.8 {ParseKeyName: null keys} {
  473.     list [catch {registry delete HKEY_CLASSES_ROOT\\} msg] $msg
  474. } {1 {bad key: cannot delete root keys}}
  475. test registry-9.9 {ParseKeyName: null keys} {
  476.     list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar\\baz} msg] $msg
  477. } {1 {unable to open key: The system cannot find the file specified.}}
  478.  
  479. test registry-10.1 {RecursiveDeleteKey} {
  480.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  481.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
  482.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
  483.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  484.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
  485.     set result
  486. } {}
  487. test registry-10.2 {RecursiveDeleteKey} {
  488.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  489.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
  490.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
  491.     set result [registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test4]
  492.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  493.     set result
  494. } {}
  495.  
  496. test registry-11.1 {SetValue: recursive creation} {
  497.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  498.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat foobar
  499.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar\\baz blat]
  500. } foobar
  501. test registry-11.2 {SetValue: modification} {
  502.     registry delete HKEY_CLASSES_ROOT\\TclFoobar
  503.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat foobar
  504.     registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat frob
  505.     set result [registry get HKEY_CLASSES_ROOT\\TclFoobar\\baz blat]
  506. } frob
  507. test registry-11.3 {SetValue: failure} {nonPortable} {
  508.     list [catch {registry set {\\petrouchka\HKEY_CLASSES_ROOT\TclFoobar} bar foobar} msg] $msg
  509. } {1 {unable to open key: Access is denied.}}
  510.  
  511.  
  512. unset hostname
  513.